package main

import (
	"fmt"
	"strconv"
)

// switch结构 for Break continue
func main() {
	//switch语句基于不同条件执行不同动作，每一个case分支都是唯一的，从上至下逐一测试，直到匹配为止
	//switch语句执行的过程从上至下，直到找到匹配项，匹配项后面也不需要加入break，switch默认情况下绘case最后自带break语句
	var a = 3
	switch a { //switch后面接受的类型是没有限制的，但是后面每一个case接受的类型必须相同，如果switch后面不传值的话默认是bool值 默认是true
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
	case 3:
		fmt.Println("3")
		fallthrough //强制穿透到下一个case 不管下一个case是否满足都会执行下一个case的代码
	case 4:
		fmt.Println("4")
	default:
		fmt.Println("没有匹配到") //default是一定会被匹配到的

	}

	//for用于实现有规律的重复动作，for循环是一个循环控制结构，可以指定执行次数的循环
	for i := 1; i <= 5; i++ {
		fmt.Println("循环第", i, "次")
		fmt.Printf("循环第%d次\n", i)
	}

	//break 结束当前整个循环 continue结束当次循环，继续下一次循环
	for i := 1; i <= 10; i++ {
		if i == 5 {
			continue //如果i=5不输出，继续下一次循环
		}
		if i == 8 {
			break //如果i=8，直接退出循环
		}
		fmt.Println("当前循环第" + strconv.Itoa(i) + "次")
	}

}
